#pragma once

class Direction : public Point
{
private:
	Direction(double x, double y, double z, bool isNormalized);

public:
	Direction(double x, double y, double z);
	Direction(const Point&);
	Direction(const Direction&);
	void Set(double x, double y, double z);
	void Set(const Point&);
	void Set(const Direction&);
	Direction operator+ (const Point&);
	Direction operator- (const Point&);
	void operator+=(const Point&);
	void operator*=(double);
	double Length();
	double SquaredLength();
	Direction Reflection(const Direction& normal) const;
};
